import unittest

# n 的累加等于： n * (n+1) / 2
def accum(n):
    if (type(n) == type(1)):
        return n * (n + 1) / 2
    else:
        return '无法计算'

class MyTest(unittest.TestCase):

    def test_a_run(self):
        print('断言 3*3 == 9，确定单元测试可运行：')
        self.assertEqual(9, 3*3)
    
    def test_str_fn(self):
        print('\n测试字符串相关方法：')
        self.assertEqual(ord('A'), 65)
        self.assertEqual(ord('国'), 22269)
        self.assertEqual(chr(25991), '文')
        self.assertEqual('\u4e2d\u6587', '中文')
        self.assertEqual(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'), '中文')
        self.assertEqual(len('中文'), 2)
        self.assertEqual(len('中文'.encode('utf-8')), 6)

    def test_str_format(self):
        print('\n测试字符串格式化方法：')
        self.assertEqual('Age: %s. Gender: %s' % (25, True), 'Age: 25. Gender: True')


    # 小明的成绩从去年的72分提升到了今年的85分，请计算小明成绩提升的百分点，并用字符串格式化显示出'xx.x%'，只保留小数点后1位：
    def test_exam(self):
        print('\n小明成绩练习题：')
        s1 = 72
        s2 = 85
        r = (85-72)*100/72
        self.assertEqual(r, 18.055555555555557)
        f = '{0:.1f}%'.format(r)
        self.assertEqual(f, '18.1%')
        print('小明的成绩提升了 %s ，恭喜！' % f)

    def test_accumulate(self):
        print('\n测试累加函数：')
        self.assertEqual(accum(1), 1)
        self.assertEqual(accum(2), 3)
        self.assertEqual(accum(10), 55)
        self.assertEqual(accum(101), 5151)
        self.assertEqual(accum(0), 0)
        self.assertEqual(accum(-28), 378)
        self.assertEqual(accum('28'), '无法计算')
        self.assertEqual(accum('abc4234'), '无法计算')

if __name__ == '__main__':
    unittest.main()
